home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / basic / vsprtv11.zip / SPRDEMO.BAS < prev    next >
BASIC Source File  |  1994-01-23  |  3KB  |  112 lines

  1. '       VSPRITES Sprite Programing Demo.
  2. '       (c) 1994 - Chad Alberts
  3.  
  4. '       To utilize this library type either QBX /L VSPRTB71 for
  5. '       Microsoft PDS 7.1 or QB /L VSPRTQ45 for QuickBASIC 4.5.
  6.  
  7. '       If you have any questions on how to use this library, just contact
  8. '       me at the address listed in README.DOC.
  9.  
  10.  
  11. '       $INCLUDE: 'VSPRITES.BI'
  12.     
  13.     IF NOT VGA THEN PRINT "Sorry, this program will only run on VGA displays.": END
  14.  
  15.     TYPE ObjectType
  16.  
  17.         x     AS INTEGER
  18.         y     AS INTEGER
  19.         oldx  AS INTEGER
  20.         oldy  AS INTEGER
  21.         xsize AS INTEGER
  22.         ysize AS INTEGER
  23.         shape AS INTEGER
  24.         xdir  AS INTEGER
  25.         ydir  AS INTEGER
  26.  
  27.     END TYPE
  28.  
  29.     CONST NumberOfShapes = 7
  30.  
  31.     DIM obj(1 TO NumberOfShapes) AS ObjectType
  32.  
  33.     RANDOMIZE TIMER
  34.  
  35.     FOR x = 1 TO NumberOfShapes
  36.        obj(x).x = ((x - 1) * 30) + 50
  37.        obj(x).oldx = obj(x).x
  38.        obj(x).y = 80
  39.        obj(x).oldy = obj(x).y
  40.        obj(x).xsize = 28
  41.        obj(x).ysize = 20
  42.        obj(x).shape = x
  43.        obj(x).xdir = 3 * RND(1) + 1
  44.        obj(x).ydir = 2 * RND(1) + 1
  45.     NEXT
  46.  
  47. ' ---------------------------------------------------------------------------
  48.  
  49. ' Allocate memory for sprites and load shape data.
  50.  
  51.     DIM ShapeBuf(0 TO 1974)
  52.  
  53.     DEF SEG = VARSEG(ShapeBuf(0))
  54.     BLOAD "SHAPES.DAT", VARPTR(ShapeBuf(0))
  55.  
  56. ' Set sprite pointers to shape data.
  57.  
  58.     DIM shape(1 TO NumberOfShapes) AS LONG
  59.  
  60.     FOR x = 1 TO NumberOfShapes
  61.        index = (x - 1) * 282
  62.        shape(x) = POINTER(VARSEG(ShapeBuf(index)), VARPTR(ShapeBuf(index)))
  63.     NEXT
  64.  
  65. ' ---------------------------------------------------------------------------
  66.  
  67.     INITGRAPH
  68.     SETPAGES 0, 1
  69.     PCXLOAD "BWFACE"
  70.     FILLBOX 0, 184, 320, 200, 0
  71.     DRAWBOX 0, 0, 319, 184, 16
  72.     WRITETEXT 16, 192, "VSPRITES 1.0 - 320 x 200 x 256 demo.", 31
  73.     SETPAGES 1, 1
  74.     PAGECOPY 1, 0
  75.     PAGECOPY 1, 2
  76.  
  77. ' ---------------------------------------------------------------------------
  78.  
  79.     FOR x = 1 TO NumberOfShapes
  80.        PUTSHAPE obj(x).x, obj(x).y, shape(obj(x).shape)
  81.     NEXT
  82.  
  83.     TI& = XTIMER
  84.     WHILE XTIMER - TI& < 200: WEND
  85.  
  86. ' Animate sprites.
  87.  
  88.     DO
  89.  
  90.     page = (page + 1) AND 1
  91.  
  92.     SETPAGES page, (page + 1) AND 1
  93.  
  94.     FOR x = 1 TO NumberOfShapes
  95.        x1 = (obj(x).oldx) AND NOT 3
  96.        y1 = obj(x).oldy
  97.        COPYBLOCK 2, x1, y1, (page + 1) AND 1, x1, y1, obj(x).xsize + 4, obj(x).ysize
  98.     NEXT
  99.     
  100.     FOR x = 1 TO NumberOfShapes
  101.        IF obj(x).x < 3 OR obj(x).x > 288 THEN obj(x).xdir = 0 - obj(x).xdir
  102.        IF obj(x).y < 2 OR obj(x).y > 162 THEN obj(x).ydir = 0 - obj(x).ydir
  103.        obj(x).oldy = obj(x).y
  104.        obj(x).oldx = obj(x).x
  105.        obj(x).x = obj(x).x + obj(x).xdir
  106.        obj(x).y = obj(x).y + obj(x).ydir
  107.        PUTSHAPE obj(x).x, obj(x).y, shape(obj(x).shape)
  108.     NEXT
  109.  
  110.     LOOP
  111.  
  112.